package com.xishu.entity.order;

import com.alibaba.fastjson.JSON;
import com.xishu.annotation.dao.DefaultValue;
import com.xishu.annotation.dao.FieldMapping;
import com.xishu.annotation.dao.NotModify;
import com.xishu.annotation.dao.Search;
import com.xishu.annotation.oplog.OplogAnnotation;
import com.xishu.entity.AbstractEntity;
import com.xishu.entity.LockOrderCashOrOrderItem;
import com.xishu.entity.oplog.OpName;
import com.xishu.entity.shop.DiscountTicket;
import com.xishu.entity.shop.OrderItemLockNumber;
import com.xishu.entity.shop.PayTypeName;
import com.xishu.entity.shop.Reason;
import io.swagger.annotations.ApiModelProperty;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 分钱结账的时候，不需要把菜分开，只需要把金额重新统计下
 * 分菜结账的时候，需要单独把菜拿出来，然后生成金额
 * 分菜分钱之前的订单则不可以支付了
 * <p>
 * 对外支付的时候生成序列shopId-orderId-orderId
 * 也就是说有多个orderId的时候，相当于是合并单来支付的
 */
@Entity(name = "shop_order")
@Table(indexes = {@Index(columnList = "createTime"), @Index(columnList = "foodTableKey"), @Index(columnList = "parentOrderId"),
        @Index(columnList = "uniqueCode"), @Index(columnList = "timeFix"), @Index(columnList = "relatedSubOrderId"),@Index(columnList = "payTime")})
public class Order extends AbstractEntity implements OpName {
    private static final long serialVersionUID = 706110347218316839L;

    @Transient
    private String opName;

    @ApiModelProperty(name = "订单编号，shopName + 时间 + 随机6位数,写操作日志用")
    @OplogAnnotation(fieldName = "订单编号")
    private String name;

    @ApiModelProperty(name = "订单编号，每次营业的顺序单号，从1开始")
    @OplogAnnotation(fieldName = "订单编号（数字）")
    @Search(groupName = "orderNo")
    private Integer orderNo;

    @ApiModelProperty(value = "归属的餐厅公司")
    private Long companyId;

    @ApiModelProperty(value = "餐厅名")
    @OplogAnnotation(fieldName = "餐厅名")
    private String companyName;

    @ApiModelProperty(value = "分店的ID")
    private Long shopId;

    @ApiModelProperty(value = "是否查询分店名名称")
    @Transient
    private Boolean queryShopName;

    @ApiModelProperty(value = "分店名")
    @OplogAnnotation(fieldName = "分店名")
    private String shopName;

    @ApiModelProperty(value = "分店名")
    @OplogAnnotation(fieldName = "分店名")
    @Transient
    private String shopName_zh;

    @ApiModelProperty(value = "分店名")
    @OplogAnnotation(fieldName = "分店名")
    @Transient
    private String shopName_en;

    @ApiModelProperty(value = "订单总的金额,可修改")
    @OplogAnnotation(fieldName = "订单用户需要支付的金额")
    private Double userCost;

    @ApiModelProperty(value = "订单总的金额,可修改")
    @OplogAnnotation(fieldName = "订单用户需要支付的金额")
    @Transient
    private long userCostLong;

    @ApiModelProperty(value = "剩余多少钱没有付")
    @OplogAnnotation(fieldName = "剩余多少钱没有付")
    private Double leftCash;

    @ApiModelProperty(value = "订单总的金额,原始的金额,也就是小计，包装费用也算在小计里面的")
    @OplogAnnotation(fieldName = "订单总的金额,小计")
    private Double costOrigin;

    @ApiModelProperty(value = "支付订单支付完成后，值多少钱,也就是打折前的金额")
    @OplogAnnotation(fieldName = "支付订单支付完成后，值多少钱，也就是打折前的金额")
    private Double payOrderCost;

    @ApiModelProperty(value = "订单明细，订单里面的每一项")
    @FieldMapping(desField = "orderItemDetailList", serialize = false, genericType = "com.xishu.entity.order.OrderItem")
    @Lob
    @Column(columnDefinition = "MEDIUMTEXT")
    private String orderItemDetailJson;

    @ApiModelProperty(value = "充值项id")
    private Long rechargeItemId;

    @Transient
    @ApiModelProperty(value = "订单明细")
    @FieldMapping(desField = "orderItemDetailJson", serialize = true)
    @DefaultValue(defaultValue = "")
    private List<OrderItem> orderItemDetailList;

    @ApiModelProperty(value = "服务费")
    @OplogAnnotation(fieldName = "服务费")
    private Double serviceFee;


    @ApiModelProperty(value = "配送费")
    @OplogAnnotation(fieldName = "配送费")
    private Double deliveryFee;

    @ApiModelProperty(value = "b端配送费")
    @OplogAnnotation(fieldName = "b端配送费")
    private Double deliveryFee_b;

    @ApiModelProperty(value = "优惠卷的打折力度")
    @Deprecated
    private Double ticketFee;

    @ApiModelProperty(value = "打折部分的价格")
    @OplogAnnotation(fieldName = "打折部分的价格,仅针对优惠卷")
    private Double discountFee;

    @ApiModelProperty(value = "实际折扣部分，主要用于优惠券超过了订单的价格的情况")
    private Double realDiscountFee;

    @ApiModelProperty(value = "折扣力度，用在计算分菜结账里面，每个菜采用相同的折扣")
    @OplogAnnotation(fieldName = "折扣力度")
    private Double discountPercent;

    @ApiModelProperty(value = "支付类型,做报表统计用,1微信，2支付宝，3master Card, 4 visa,5现金,6foodPanda")
    private Integer payType;

    @Column(length = 30)
    @ApiModelProperty(value = "支付类型中文")
    private String payTypeName_zh;

    @Column(length = 30)
    @ApiModelProperty(value = "支付类型英文")
    private String payTypeName_en;

    @ApiModelProperty(value = "支付类型的二进制形式")
    @DefaultValue(defaultValue = "0")
    @Search(ignore = true)
    private Integer payTypeBit;

    @Transient
    @ApiModelProperty(value = "支付方式查询")
    @Search(bitAnd = true, fieldName = "payTypeBit")
    private List<Integer> payTypeList;

    @Transient
    @ApiModelProperty(value = "支付类型,用做显示")
    private List<Integer> payTypeEnumList = new ArrayList<>();

    @ApiModelProperty(value = "支付类型, 用于多个类型保存用")
    @Transient
    private String payTypeJson;

    @ApiModelProperty(value = "人数")
    private Integer persons;

    @ApiModelProperty(value = "父订单号，用于做分菜结账以及分钱结账")
    private Long parentOrderId;

    @ApiModelProperty(value = "订单列表显示用的")
    @Deprecated
    private Boolean reportOrder;

    @ApiModelProperty(value = "点餐种类，1堂食，2外卖,3外卖平台,4总二维码堂食")
    private Integer orderType;

    @Transient
    @ApiModelProperty(value = "点餐种类，1堂食，2外卖,3外卖平台,4总二维码堂食")
    @Search(in = true, fieldName = "orderType")
    private List<Integer> orderTypeList;

    @ApiModelProperty(value = " 外卖平台名称")
    private String takeOutPlatName;

    @ApiModelProperty(value = "服务员的ID，做报表用")
    private Long waiterId;

    @ApiModelProperty(value = "服务员姓名")
    private String waiterName;

    @ApiModelProperty(value = "桌号行号")
    private Integer tableRow;

    @ApiModelProperty(value = "桌号列号")
    private Integer tableColumn;

    @ApiModelProperty(value = "拼桌ID, 一个餐桌上面的唯一ID")
    private Integer uniqueCode;

    @ApiModelProperty(value = "拼桌号，A1,B1,A2")
    private String code;

    @ApiModelProperty(value = "实际支付的订单，如果是没有分菜分账的订单是可以支付的，如果分菜分账的订单，总的订单是不可以支付的，分过之后的订单可以支付")
    @Deprecated
    private Boolean realPayOrder;

    @ApiModelProperty(value = "总订单的优惠卷")
    @Transient
    @FieldMapping(desField = "parentTicketJson", serialize = true)
    private List<String> parentTicketCodeList;

    @ApiModelProperty(value = "总订单的优惠卷")
    @FieldMapping(desField = "parentTicketCodeList", serialize = false, genericType = "java.lang.String")
    private String parentTicketJson;

    @ApiModelProperty(value = "优惠卷ID")
    @FieldMapping(desField = "ticketCodeList", serialize = false, genericType = "java.lang.String")
    private String ticketJson;

    @ApiModelProperty(value = "优惠卷ID列表")
    @Transient
    @FieldMapping(desField = "ticketJson", serialize = true)
    @DefaultValue(defaultValue = "")
    private List<String> ticketCodeList;

    @ApiModelProperty(value = "电话号码，用在外卖,快餐堂食")
    private String phone;

    @ApiModelProperty(value = "顾客姓名，用在外卖")
    private String customerName;

    @ApiModelProperty(value = "外卖取餐号,下单成功后再生成,按分店维度去生成")
    @NotModify
    private Integer takeOutNumber;

    @ApiModelProperty(value = "外卖打折优惠")
    private Double takeOutDiscountFee;

    @ApiModelProperty(value = "备注")
    private String remarks;

    @ApiModelProperty(value = "订单状态, 100是已完成，99是待支付，1是正在点餐，2是个人结账，3是正在设置分钱结账，4是正在设置分菜结账，5是按人数分钱结账，6是自定义分线结账，7是分菜结账，8是已经有一部分人分钱结账已付款，9是已经有一部分人分菜结账已付款,10自定义分钱结账，部分付款")
    private Integer status;

    @ApiModelProperty(value = "是否已经支付，取消了的订单也算已经支付的订单,为了做回调的校验用")
    @DefaultValue(defaultValue = "false")
    private Boolean payed;

    @ApiModelProperty(value = "只要支付过一次，这个标记就为true,哪怕退款也表示曾经支付过一次")
    private Boolean payedOnce;

    @ApiModelProperty(value = "曾经完成过一次完成的支付")
    private Boolean oncePayEnd;

    @ApiModelProperty(value = "支付时间，只能设置一次，不能同一个订单会在统计里面算成两次的支付")
    private Long payTime;

    @ApiModelProperty(value = "父订单结束支付时间")
    private Long payEndTime;

    @ApiModelProperty(value = "是否是已经取消的订单")
    private Boolean cancel;

    @ApiModelProperty(value = "订单状态查询,只是用于查询，不做保存")
    @Transient
    @Search(in = true, fieldName = "status")
    private List<Integer> statusArray;

    @ApiModelProperty(value = "餐桌的编码,行号：列号：唯一序列号")
    @Search(prefixLike = true, fieldName = "foodTableKey")
    private String foodTableKey;

    @Transient
    @Search(prefixLike = true, fieldName = "foodTableKey")
    @ApiModelProperty(value = "餐桌的编码,行号：列号")
    private String foodTableTemplateKey;

    @ApiModelProperty(value = "上一个操作的sessionId,支付订单的sessionId,该sessionId的用户可以取消支付订单,餐厅经理可以取消")
    @NotModify
    private String lastOperateSession;

    @ApiModelProperty(value = "订单对应的sessionId")
    private String sessionId;

    @ApiModelProperty(value = "选择的付款方式，1是单独结账，2是分钱结账按人数来算，3是分钱结账自定义金额，4是分菜结账")
    private Integer userSelectPayType;

    @ApiModelProperty(value = "分钱结账的配置")
    @FieldMapping(desField = "partCashJson", serialize = true, isObject = true)
    @Transient
    private PartCash partCash;

    @ApiModelProperty(value = "分钱结账的配置")
    @FieldMapping(desField = "partCash", serialize = false, isObject = true, genericType = "com.xishu.entity.order.PartCash")
    private String partCashJson;

    @ApiModelProperty(value = "是否是分菜结账")
    private Boolean partFood;

    @ApiModelProperty(value = "是否返还费用给客户")
    @DefaultValue(defaultValue = "false")
    private Boolean returnCash;

    @ApiModelProperty(value = "已经发送到厨房的列表")
    @FieldMapping(desField = "sendPrinterJson", serialize = true)
    @Transient
    @DefaultValue(defaultValue = "")
    private List<SendPrinter> sendPrinterList;

    @ApiModelProperty(value = "已经发送到厨房的列表")
    @FieldMapping(desField = "sendPrinterList", serialize = false, genericType = "com.xishu.entity.order.SendPrinter")
    @Lob
    @Column(columnDefinition = "MEDIUMTEXT")
    @OplogAnnotation(fieldName = "已经发送到厨房的列表")
    private String sendPrinterJson;

    @ApiModelProperty(value = "发送到厨房的标记")
    private Boolean sendKitchen;

    @ApiModelProperty(value = "场景ID")
    private Long sceneId;

    @Transient
    @ApiModelProperty(value = "外卖地址")
    @FieldMapping(desField = "addressJson", serialize = true, isObject = true)
    public Address address;

    @ApiModelProperty(value = "外卖地址")
    @FieldMapping(desField = "address", serialize = false, isObject = true, genericType = "com.xishu.entity.order.Address")
    public String addressJson;

    @ApiModelProperty(value = "用户姓名")
    private String userName;

    @ApiModelProperty(value = "联系方式")
    @Search(groupName = "orderNo")
    private String contact;

    @ApiModelProperty(value = "是否接收外卖平台的订单")
    private Boolean receiveTakeoutPlatOrder;

    @ApiModelProperty(value = "指定消费了XXX金额，返回消费后金额的优惠卷")
    private Double satisfy;

    @ApiModelProperty(value = "消费后金额产生的满减优惠卷")
    private String satisfyAndCutCode;

    @ApiModelProperty(value = "是否扫描餐桌的订单")
    private Boolean qrFoodTableOrder;

    @ApiModelProperty(value = "包装费")
    private Double packageFee;

    @ApiModelProperty(value = "是否是C端的订单")
    private Boolean customerOrder;

    @ApiModelProperty(value = "是否是先付款")
    private Boolean payFirst;

    @ApiModelProperty(value = "是否开启线上付款")
    private Boolean onlinePay;

    @ApiModelProperty(value = "是否可以在B端显示了，后付款的情况，点结账按钮的时候，需要下发该接口")
    private Boolean businessEndShow;

    @ApiModelProperty(value = "落单时间,或者是B端的创建时间")
    private Long confirmTime;

    @Transient
    @ApiModelProperty(value = "C端的请求")
    private Boolean customerRequest;

    @ApiModelProperty(value = "餐桌的显示号码")
    private Integer showNo;

    @ApiModelProperty(value = "分菜结账的子订单ID")
    private Integer subOrderId;

    @ApiModelProperty(value = "是否已经校验过了")
    private Boolean verified;

    @ApiModelProperty(value = "第3方支付,为了退款的时候，调用对应的接口")
    private Integer pay3rd;

    @ApiModelProperty(value = "钱方订单号")
    private String syssn;

    @Transient
    @ApiModelProperty(value = "取消理由：1客人退菜，2库存不足，3服务员错误操作，4其它")
    @FieldMapping(desField = "returnReasonJson", serialize = true)
    @Search(ignore = true)
    private List<Long> returnReasonList;

    @ApiModelProperty(value = "取消理由：1客人退菜，2库存不足，3服务员错误操作，4其它")
    @FieldMapping(desField = "returnReasonList", serialize = false, genericType = "java.lang.Long")
    @Search(ignore = true)
    private String returnReasonJson;

    @ApiModelProperty(value = "二维码扫描，是否已经关闭，如果已经关闭C端不能扫描")
    private Boolean closeQrScanShow;

    @ApiModelProperty(value = "微信支付")
    @Search(groupName = "payType")
    private Boolean weixinPay;

    @ApiModelProperty(value = "支付宝支付")
    @Search(groupName = "payType")
    private Boolean aliPay;

    @ApiModelProperty(value = "信用卡支付")
    @Search(groupName = "payType")
    private Boolean masterCardPay;

    @ApiModelProperty(value = "visa支付")
    @Search(groupName = "payType")
    private Boolean visaPay;

    @ApiModelProperty(value = "现金支付")
    @Search(groupName = "payType")
    private Boolean cashPay;

    @ApiModelProperty(value = "apple支付")
    @Search(groupName = "payType")
    private Boolean applePay;

    @ApiModelProperty(value = "google支付")
    @Search(groupName = "payType")
    private Boolean googlePay;

    @ApiModelProperty(value = "八达通")
    @Search(groupName = "payType")
    private Boolean baDaTong;

    @ApiModelProperty(value = "银联")
    @Search(groupName = "payType")
    private Boolean unionPay;

    @ApiModelProperty(value = "stripe支付")
    @Search(groupName = "payType")
    private Boolean stripePay;

    @ApiModelProperty(value = "信用卡支付")
    @Search(groupName = "payType")
    private Boolean creditCard;

    @ApiModelProperty(value = "stripe支付方式，是Google pay, Apple pay, Master, Visa等")
    private String subStripePayType;

    @ApiModelProperty(value = "americanExpress")
    @Search(groupName = "payType")
    private Boolean americanExpress;

    @ApiModelProperty(value = "打印机ID")
    private Long printerId;

    @ApiModelProperty(value = "是否是已经锁定了菜品数量的订单,只有C端才标记，B端不标记，B端锁定的菜的数量，需要服务员手工处理")
    private Boolean lockItemNumberOrder;

    @ApiModelProperty(value = "锁定的时间")
    private Long lockTime;

    @ApiModelProperty(value = "锁定了哪些菜品数量")
    @Transient
    @FieldMapping(desField = "itemLockNumberListJson", serialize = true)
    @DefaultValue(defaultValue = "")
    private List<OrderItemLockNumber> itemLockNumberList;

    @Lob
    @Column(columnDefinition = "MEDIUMTEXT")
    @ApiModelProperty(value = "锁定了哪些菜品数量")
    @FieldMapping(desField = "itemLockNumberList", serialize = false, genericType = "com.xishu.entity.shop.OrderItemLockNumber")
    private String itemLockNumberListJson;

    @ApiModelProperty(value = "是否是失效的订单")
    private Boolean expiredOrder;

    @ApiModelProperty(value = "时间过期的订单，也就是超过了多少时间，没有支付的订单")
    private Boolean timeExpiredOrder;

    @ApiModelProperty(value = "stripe的支付信息ID,用在退款的地方")
    private String stripePaymentId;

    @ApiModelProperty(value = "订单已合并")
    private Boolean combineOrder;

    @ApiModelProperty(value = "合并的订单列表")
    @Transient
    @FieldMapping(desField = "combineOrderListJson", serialize = true)
    private List<Long> combineOrderList;

    @ApiModelProperty(value = "合并的订单列表")
    @FieldMapping(desField = "combineOrderList", serialize = false, genericType = "java.lang.Long")
    private String combineOrderListJson;

    @Transient
    @ApiModelProperty(value = "订单分菜分账锁定量")
    @FieldMapping(desField = "lockOrderCashOrOrderItemJson", serialize = true)
    private List<LockOrderCashOrOrderItem> lockOrderCashOrOrderItemList;

    @ApiModelProperty(value = "订单分菜分账锁定量")
    @FieldMapping(desField = "lockOrderCashOrOrderItemList", serialize = false, genericType = "com.xishu.entity.LockOrderCashOrOrderItem")
    @Lob
    @Column(columnDefinition = "MEDIUMTEXT")
    private String lockOrderCashOrOrderItemJson;

    @Transient
    @ApiModelProperty(value = "锁定菜品失败")
    private Boolean lockOrderItemError;

    @Transient
    @ApiModelProperty(value = "过滤显示checkout的菜")
    private Boolean filterCheckoutOrderItem;

    @Transient
    @ApiModelProperty(value = "现金支付传递的")
    private CashPay cashPayCallBack;

    @ApiModelProperty(value = "现金支付列表")
    @Transient
    @FieldMapping(desField = "cashPayJson", serialize = true)
    private List<CashPay> cashPayList;

    @ApiModelProperty(value = "现金支付列表")
    @FieldMapping(desField = "cashPayList", serialize = false, genericType = "com.xishu.entity.order.CashPay")
    @Lob
    @Column(columnDefinition = "MEDIUMTEXT")
    private String cashPayJson;

    @ApiModelProperty(value = "是否是父订单")
    private Boolean parentOrder;

    @ApiModelProperty(value = "支付方式的锁定")
    @Transient
    @FieldMapping(desField = "payTypeLockJson", serialize = true, isObject = true)
    private PayTypeLock payTypeLock;

    @ApiModelProperty(value = "支付方式的锁定")
    @FieldMapping(desField = "payTypeLock", serialize = false, isObject = true, genericType = "com.xishu.entity.order.PayTypeLock")
    private String payTypeLockJson;

    @ApiModelProperty(value = "是否被服务员锁定")
    private Boolean lockByWaiter;

    @ApiModelProperty(value = "是否是C端创建的支付订单")
    private Boolean customerPayOrder;

    @Search(gte = true, fieldName = "timeFix")
    @Transient
    public Integer startTimeFix;

    @ApiModelProperty(value = "闭店周期，在管理系统里面通过该值来查询")
    private Integer timeFix;

    @ApiModelProperty(value = "时间序列号，在闭店的时候生成，是连续的序列号")
    private Integer timeNo;

    @ApiModelProperty(value = "订单是否已关闭")
    private Boolean close;

    @ApiModelProperty(value = "强制删除标记")
    @Transient
    @Search(ignore = true)
    private Boolean forceDelete;

    @ApiModelProperty(value = "是否显示优惠卷的详情")
    @Transient
    @Search(ignore = true)
    private Boolean showTicket;

    @ApiModelProperty(value = "所有使用的优惠卷的列表")
    @Transient
    @Search(ignore = true)
    private List<DiscountTicket> ticketList;

    @ApiModelProperty(value = "退款理由")
    @Transient
    @Search(ignore = true)
    private Boolean showReason;

    @ApiModelProperty(value = "退款理由")
    @Transient
    @Search(ignore = true)
    private List<Reason> reasonList;

    @Transient
    @ApiModelProperty(value = "是否打印客人签名")
    private Boolean printerCustomerSignature;

    @ApiModelProperty(value = "消费税")
    private Double consumptionTax;

    @ApiModelProperty(value = "会员ID")
    private Long customerId;

    @ApiModelProperty(value = "会员获得的积分")
    private Integer score;

    @ApiModelProperty(value = "钱不足以转成积分之后，保存的钱")
    private Integer remainCost;

    @ApiModelProperty(value = "年龄")
    private Integer age;

    @ApiModelProperty(value = "是否是新客, 0表示新客，1表示熟悉")
    private Integer newCustomerOrder;

    @ApiModelProperty(value = "会员级别")
    private Integer customerLevel;

    @ApiModelProperty(value = "是否是VIP会员支付的订单")
    private Boolean customerVip;

    @ApiModelProperty(value = "是否是VIP续费订单")
    private Boolean vipOrder;

    @ApiModelProperty(value = "是否为充值订单")
    private Boolean rechargeOrder;

    @ApiModelProperty(value = "VIP续费的次数")
    private Integer vipRenewTime;

    @ApiModelProperty(value = "VIP的结束时间")
    private Long vipEndTime;

    @ApiModelProperty(value = "性别, 1男2女")
    private Integer sex;

    @ApiModelProperty(value = "是否在C端显示")
    @Transient
    @Search(ignore = true)
    private Boolean customerShow;

    @ApiModelProperty(value = "具体的小费")
    @DefaultValue(defaultValue = "0")
    private Double tipsFee;

    @ApiModelProperty(value = "查詢小費時的起始值")
    @Search(gt = true, fieldName = "tipsFee")
    private Double startTipsFee;

    @ApiModelProperty(value = "子订单")
    private Boolean subOrder;

    @ApiModelProperty(value = "相关联的子订单")
    private Long relatedSubOrderId;

    @Transient
    @DefaultValue(defaultValue = "")
    private List<CalTips> calTipsList;

    @ApiModelProperty(value = "未分配的金额")
    private Double unassignCash;

    @ApiModelProperty(value = "支票支付")
    @Search(groupName = "payType")
    private Boolean cheque;

    @ApiModelProperty(value = "是否可以结账")
    private Boolean canCheckout;

    @ApiModelProperty(value = "是否是默认餐桌上面的订单")
    private Boolean defaultFoodTableOrder;

    @ApiModelProperty(value = "B端用户显示的价格")
    private Double userCost_b;

    @ApiModelProperty(value = "C端用户显示的价格")
    private Double userCost_c;

    @ApiModelProperty(value = "B端用户显示的小计")
    private Double costOrigin_b;

    @ApiModelProperty(value = "C端用户显示的小计")
    private Double costOrigin_c;

    @ApiModelProperty(value = "B端外卖打折优惠")
    private Double takeOutDiscountFee_b;

    @ApiModelProperty(value = "C端外卖打折优惠")
    private Double takeOutDiscountFee_c;

    @ApiModelProperty(value = "B端服务费")
    @OplogAnnotation(fieldName = "B端服务费")
    private Double serviceFee_b;

    @ApiModelProperty(value = "C端服务费")
    @OplogAnnotation(fieldName = "C端服务费")
    private Double serviceFee_c;

    @ApiModelProperty(value = "B端剩余多少钱没有付")
    private Double left_cash_b;

    @ApiModelProperty(value = "C端剩余多少钱没有付")
    private Double left_cash_c;

    @ApiModelProperty(value = "B端消费税")
    private Double consumptionTax_b;

    @ApiModelProperty(value = "C端消费税")
    private Double consumptionTax_c;

    @ApiModelProperty(value = "每张优惠券的优惠金额")
    @FieldMapping(serialize = false, genericType = "com.xishu.entity.order.TicketDiscountFee", desField = "ticketDiscountFeeList")
    @Lob
    @Column(columnDefinition = "MEDIUMTEXT")
    private String ticketDiscountJson;

    @ApiModelProperty(value = "每张优惠券的优惠金额")
    @FieldMapping(serialize = true, desField = "ticketDiscountJson")
    @Transient
    private List<TicketDiscountFee> ticketDiscountFeeList;

    @Transient
    @ApiModelProperty(value = "支付类型中英文显示")
    @FieldMapping(serialize = true, desField = "payTypeNameJson")
    @DefaultValue(defaultValue = "")
    private List<PayTypeName> payTypeNameList;

    @ApiModelProperty(value = "支付类型中英文显示")
    @Lob
    @Column(columnDefinition = "MEDIUMTEXT")
    @FieldMapping(serialize = false, genericType = "com.xishu.entity.shop.PayTypeName", desField = "payTypeNameList")
    private String payTypeNameJson;

    @ApiModelProperty(value = "是否是stripe刷卡机支付的订单")
    private Boolean stripeTerminal;

    @ApiModelProperty(value = "外卖设置里面的ID")
    private Long takeoutSettingId;

    @ApiModelProperty(value = "外卖设置中文")
    private String takeoutSetting_zh;

    @ApiModelProperty(value = "外卖设置英文")
    private String takeoutSetting_en;

    @ApiModelProperty(value = "是否是第3方支付的订单")
    private Boolean payedWith3rd;

    @ApiModelProperty(value = "外卖绑定的付款方式")
    private Integer takeoutBindPayType;

    @ApiModelProperty(value = "小费在闭店的时候，是否已经校验过了")
    private Boolean tipsVerify;

    @Transient
    @ApiModelProperty(value = "stripe返回的错误消息")
    private String stripeErrorMsg;

    @ApiModelProperty(value = "持卡人")
    @Column(length = 50)
    @DefaultValue(defaultValue = "")
    private String cardHolderName;

    @Column(length = 10)
    @ApiModelProperty(value = "信用卡最后4位")
    @DefaultValue(defaultValue = "")
    private String last4;

    @ApiModelProperty(value = "eft支付")
    @DefaultValue(defaultValue = "false")
    private Boolean eftPay;

    @Transient
    @ApiModelProperty(value = "foodPanda订单的各种信息")
    @FieldMapping(desField = "foodPandaInfoJson", isObject = true, serialize = true)
    private FoodPandaInfo foodPandaInfo;

    @ApiModelProperty(value = "foodPanda订单的各种信息")
    @FieldMapping(desField = "foodPandaInfo", isObject = true, serialize = false, genericType = "com.xishu.entity.order.FoodPandaInfo")
    private String foodPandaInfoJson;


    public Boolean getEftPay() {
        return eftPay;
    }

    public void setEftPay(Boolean eftPay) {
        this.eftPay = eftPay;
    }

    public String getLast4() {
        return last4;
    }

    public void setLast4(String last4) {
        this.last4 = last4;
    }

    public String getCardHolderName() {
        return cardHolderName;
    }

    public void setCardHolderName(String cardHolderName) {
        this.cardHolderName = cardHolderName;
    }

    public String getStripeErrorMsg() {
        return stripeErrorMsg;
    }

    public void setStripeErrorMsg(String stripeErrorMsg) {
        this.stripeErrorMsg = stripeErrorMsg;
    }

    public Boolean getTipsVerify() {
        return tipsVerify;
    }

    public void setTipsVerify(Boolean tipsVerify) {
        this.tipsVerify = tipsVerify;
    }

    public Boolean getRechargeOrder() {
        return rechargeOrder;
    }

    public void setRechargeOrder(Boolean rechargeOrder) {
        this.rechargeOrder = rechargeOrder;
    }

    public Boolean getOncePayEnd() {
        return oncePayEnd;
    }

    public void setOncePayEnd(Boolean oncePayEnd) {
        this.oncePayEnd = oncePayEnd;
    }

    public FoodPandaInfo getFoodPandaInfo() {
        return foodPandaInfo;
    }

    public void setFoodPandaInfo(FoodPandaInfo foodPandaInfo) {
        this.foodPandaInfo = foodPandaInfo;
    }

    public String getFoodPandaInfoJson() {
        return foodPandaInfoJson;
    }

    public void setFoodPandaInfoJson(String foodPandaInfoJson) {
        this.foodPandaInfoJson = foodPandaInfoJson;
    }

    public void setTakeoutBindPayType(Integer takeoutBindPayType) {
        this.takeoutBindPayType = takeoutBindPayType;
    }

    public Integer getTakeoutBindPayType() {
        return takeoutBindPayType;
    }

    public Boolean getPayedWith3rd() {
        return payedWith3rd;
    }

    public void setPayedWith3rd(Boolean payedWith3rd) {
        this.payedWith3rd = payedWith3rd;
    }

    public String getTakeoutSetting_zh() {
        return takeoutSetting_zh;
    }

    public void setTakeoutSetting_zh(String takeoutSetting_zh) {
        this.takeoutSetting_zh = takeoutSetting_zh;
    }

    public String getTakeoutSetting_en() {
        return takeoutSetting_en;
    }

    public void setTakeoutSetting_en(String takeoutSetting_en) {
        this.takeoutSetting_en = takeoutSetting_en;
    }

    public Long getTakeoutSettingId() {
        return takeoutSettingId;
    }

    public void setTakeoutSettingId(Long takeoutSettingId) {
        this.takeoutSettingId = takeoutSettingId;
    }

    public Boolean getStripeTerminal() {
        return stripeTerminal;
    }

    public void setStripeTerminal(Boolean stripeTerminal) {
        this.stripeTerminal = stripeTerminal;
    }

    public Integer getPayTypeBit() {
        return payTypeBit;
    }

    public void setPayTypeBit(Integer payTypeBit) {
        this.payTypeBit = payTypeBit;
    }

    public List<PayTypeName> getPayTypeNameList() {
        return payTypeNameList;
    }

    public void setPayTypeNameList(List<PayTypeName> payTypeNameList) {
        this.payTypeNameList = payTypeNameList;
    }

    public String getPayTypeNameJson() {
        return payTypeNameJson;
    }

    public void setPayTypeNameJson(String payTypeNameJson) {
        this.payTypeNameJson = payTypeNameJson;
    }

    public String getTicketDiscountJson() {
        return ticketDiscountJson;
    }

    public void setTicketDiscountJson(String ticketDiscountJson) {
        this.ticketDiscountJson = ticketDiscountJson;
    }

    public List<TicketDiscountFee> getTicketDiscountFeeList() {
        return ticketDiscountFeeList;
    }

    public void setTicketDiscountFeeList(List<TicketDiscountFee> ticketDiscountFeeList) {
        this.ticketDiscountFeeList = ticketDiscountFeeList;
    }

    public Double getConsumptionTax_b() {
        return consumptionTax_b;
    }

    public void setConsumptionTax_b(Double consumptionTax_b) {
        this.consumptionTax_b = consumptionTax_b;
    }

    public Double getConsumptionTax_c() {
        return consumptionTax_c;
    }

    public void setConsumptionTax_c(Double consumptionTax_c) {
        this.consumptionTax_c = consumptionTax_c;
    }

    public Double getLeft_cash_b() {
        return left_cash_b;
    }

    public void setLeft_cash_b(Double left_cash_b) {
        this.left_cash_b = left_cash_b;
    }

    public Double getLeft_cash_c() {
        return left_cash_c;
    }

    public void setLeft_cash_c(Double left_cash_c) {
        this.left_cash_c = left_cash_c;
    }

    public Double getServiceFee_b() {
        return serviceFee_b;
    }

    public void setServiceFee_b(Double serviceFee_b) {
        this.serviceFee_b = serviceFee_b;
    }

    public Double getServiceFee_c() {
        return serviceFee_c;
    }

    public void setServiceFee_c(Double serviceFee_c) {
        this.serviceFee_c = serviceFee_c;
    }

    public Double getTakeOutDiscountFee_b() {
        return takeOutDiscountFee_b;
    }

    public void setTakeOutDiscountFee_b(Double takeOutDiscountFee_b) {
        this.takeOutDiscountFee_b = takeOutDiscountFee_b;
    }

    public Double getTakeOutDiscountFee_c() {
        return takeOutDiscountFee_c;
    }

    public void setTakeOutDiscountFee_c(Double takeOutDiscountFee_c) {
        this.takeOutDiscountFee_c = takeOutDiscountFee_c;
    }

    public Double getCostOrigin_b() {
        return costOrigin_b;
    }

    public void setCostOrigin_b(Double costOrigin_b) {
        this.costOrigin_b = costOrigin_b;
    }

    public Double getCostOrigin_c() {
        return costOrigin_c;
    }

    public void setCostOrigin_c(Double costOrigin_c) {
        this.costOrigin_c = costOrigin_c;
    }

    public Double getUserCost_b() {
        return userCost_b;
    }

    public void setUserCost_b(Double userCost_b) {
        this.userCost_b = userCost_b;
    }

    public Double getUserCost_c() {
        return userCost_c;
    }

    public void setUserCost_c(Double userCost_c) {
        this.userCost_c = userCost_c;
    }

    public Boolean getDefaultFoodTableOrder() {
        return defaultFoodTableOrder;
    }

    public void setDefaultFoodTableOrder(Boolean defaultFoodTableOrder) {
        this.defaultFoodTableOrder = defaultFoodTableOrder;
    }

    public Boolean getCanCheckout() {
        return canCheckout;
    }

    public void setCanCheckout(Boolean canCheckout) {
        this.canCheckout = canCheckout;
    }

    public Long getRechargeItemId() {
        return rechargeItemId;
    }

    public void setRechargeItemId(Long rechargeItemId) {
        this.rechargeItemId = rechargeItemId;
    }

    public Double getStartTipsFee() {
        return startTipsFee;
    }

    public void setStartTipsFee(Double startTipsFee) {
        this.startTipsFee = startTipsFee;
    }

    public Boolean getCheque() {
        return cheque;
    }

    public void setCheque(Boolean cheque) {
        this.cheque = cheque;
    }

    public Boolean getCreditCard() {
        return creditCard;
    }

    public void setCreditCard(Boolean creditCard) {
        this.creditCard = creditCard;
    }

    public Double getUnassignCash() {
        return unassignCash;
    }

    public void setUnassignCash(Double unassignCash) {
        this.unassignCash = unassignCash;
    }

    public Boolean getSubOrder() {
        return subOrder;
    }

    public void setSubOrder(Boolean subOrder) {
        this.subOrder = subOrder;
    }

    public Long getRelatedSubOrderId() {
        return relatedSubOrderId;
    }

    public void setRelatedSubOrderId(Long relatedSubOrderId) {
        this.relatedSubOrderId = relatedSubOrderId;
    }

    public Double getTipsFee() {
        return tipsFee;
    }

    public void setTipsFee(Double tipsFee) {
        this.tipsFee = tipsFee;
    }

    public List<CalTips> getCalTipsList() {
        return calTipsList;
    }

    public void setCalTipsList(List<CalTips> calTipsList) {
        this.calTipsList = calTipsList;
    }

    public Boolean getCustomerShow() {
        return customerShow;
    }

    public void setCustomerShow(Boolean customerShow) {
        this.customerShow = customerShow;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Double getRealDiscountFee() {
        return realDiscountFee;
    }

    public void setRealDiscountFee(Double realDiscountFee) {
        this.realDiscountFee = realDiscountFee;
    }

    public Long getVipEndTime() {
        return vipEndTime;
    }

    public void setVipEndTime(Long vipEndTime) {
        this.vipEndTime = vipEndTime;
    }

    public Boolean getVipOrder() {
        return vipOrder;
    }

    public void setVipOrder(Boolean vipOrder) {
        this.vipOrder = vipOrder;
    }

    public Integer getVipRenewTime() {
        return vipRenewTime;
    }

    public void setVipRenewTime(Integer vipRenewTime) {
        this.vipRenewTime = vipRenewTime;
    }

    public Boolean getQueryShopName() {
        return queryShopName;
    }

    public void setQueryShopName(Boolean queryShopName) {
        this.queryShopName = queryShopName;
    }

    public String getShopName_zh() {
        return shopName_zh;
    }

    public void setShopName_zh(String shopName_zh) {
        this.shopName_zh = shopName_zh;
    }

    public String getShopName_en() {
        return shopName_en;
    }

    public void setShopName_en(String shopName_en) {
        this.shopName_en = shopName_en;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getNewCustomerOrder() {
        return newCustomerOrder;
    }

    public void setNewCustomerOrder(Integer newCustomerOrder) {
        this.newCustomerOrder = newCustomerOrder;
    }

    public Integer getCustomerLevel() {
        return customerLevel;
    }

    public void setCustomerLevel(Integer customerLevel) {
        this.customerLevel = customerLevel;
    }

    public Boolean getCustomerVip() {
        return customerVip;
    }

    public void setCustomerVip(Boolean customerVip) {
        this.customerVip = customerVip;
    }

    public Integer getRemainCost() {
        return remainCost;
    }

    public void setRemainCost(Integer remainCost) {
        this.remainCost = remainCost;
    }

    public Long getCustomerId() {
        return customerId;
    }

    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    public Integer getScore() {
        return score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }

    public Double getConsumptionTax() {
        return consumptionTax;
    }

    public void setConsumptionTax(Double consumptionTax) {
        this.consumptionTax = consumptionTax;
    }

    public Boolean getPrinterCustomerSignature() {
        return printerCustomerSignature;
    }

    public void setPrinterCustomerSignature(Boolean printerCustomerSignature) {
        this.printerCustomerSignature = printerCustomerSignature;
    }

    public Boolean getShowReason() {
        return showReason;
    }

    public void setShowReason(Boolean showReason) {
        this.showReason = showReason;
    }

    public List<Reason> getReasonList() {
        return reasonList;
    }

    public void setReasonList(List<Reason> reasonList) {
        this.reasonList = reasonList;
    }

    public List<DiscountTicket> getTicketList() {
        return ticketList;
    }

    public void setTicketList(List<DiscountTicket> ticketList) {
        this.ticketList = ticketList;
    }

    public Boolean getShowTicket() {
        return showTicket;
    }

    public void setShowTicket(Boolean showTicket) {
        this.showTicket = showTicket;
    }

    public Integer getStartTimeFix() {
        return startTimeFix;
    }

    public void setStartTimeFix(Integer startTimeFix) {
        this.startTimeFix = startTimeFix;
    }

    public Boolean getForceDelete() {
        return forceDelete;
    }

    public void setForceDelete(Boolean forceDelete) {
        this.forceDelete = forceDelete;
    }

    public Boolean getPayedOnce() {
        return payedOnce;
    }

    public void setPayedOnce(Boolean payedOnce) {
        this.payedOnce = payedOnce;
    }

    public Boolean getClose() {
        return close;
    }

    public void setClose(Boolean close) {
        this.close = close;
    }

    public Integer getTimeNo() {
        return timeNo;
    }

    public void setTimeNo(Integer timeNo) {
        this.timeNo = timeNo;
    }

    public Integer getTimeFix() {
        return timeFix;
    }

    public void setTimeFix(Integer timeFix) {
        this.timeFix = timeFix;
    }

    public Long getPayEndTime() {
        return payEndTime;
    }

    public void setPayEndTime(Long payEndTime) {
        this.payEndTime = payEndTime;
    }

    public String getSubStripePayType() {
        return subStripePayType;
    }

    public void setSubStripePayType(String subStripePayType) {
        this.subStripePayType = subStripePayType;
    }

    public long getUserCostLong() {
        return userCostLong;
    }

    public void setUserCostLong(long userCostLong) {
        this.userCostLong = userCostLong;
    }

    public Boolean getCustomerPayOrder() {
        return customerPayOrder;
    }

    public void setCustomerPayOrder(Boolean customerPayOrder) {
        this.customerPayOrder = customerPayOrder;
    }

    public Boolean getLockByWaiter() {
        return lockByWaiter;
    }

    public void setLockByWaiter(Boolean lockByWaiter) {
        this.lockByWaiter = lockByWaiter;
    }

    public PayTypeLock getPayTypeLock() {
        return payTypeLock;
    }

    public void setPayTypeLock(PayTypeLock payTypeLock) {
        this.payTypeLock = payTypeLock;
    }

    public String getPayTypeLockJson() {
        return payTypeLockJson;
    }

    public void setPayTypeLockJson(String payTypeLockJson) {
        this.payTypeLockJson = payTypeLockJson;
    }

    public Boolean getParentOrder() {
        return parentOrder;
    }

    public void setParentOrder(Boolean parentOrder) {
        this.parentOrder = parentOrder;
    }

    public CashPay getCashPayCallBack() {
        return cashPayCallBack;
    }

    public void setCashPayCallBack(CashPay cashPayCallBack) {
        this.cashPayCallBack = cashPayCallBack;
    }

    public List<CashPay> getCashPayList() {
        return cashPayList;
    }

    public void setCashPayList(List<CashPay> cashPayList) {
        this.cashPayList = cashPayList;
    }

    public String getCashPayJson() {
        return cashPayJson;
    }

    public void setCashPayJson(String cashPayJson) {
        this.cashPayJson = cashPayJson;
    }

    public Boolean getFilterCheckoutOrderItem() {
        return filterCheckoutOrderItem;
    }

    public void setFilterCheckoutOrderItem(Boolean filterCheckoutOrderItem) {
        this.filterCheckoutOrderItem = filterCheckoutOrderItem;
    }

    public Boolean getLockOrderItemError() {
        return lockOrderItemError;
    }

    public void setLockOrderItemError(Boolean lockOrderItemError) {
        this.lockOrderItemError = lockOrderItemError;
    }

    public String getLockOrderCashOrOrderItemJson() {
        return lockOrderCashOrOrderItemJson;
    }

    public void setLockOrderCashOrOrderItemJson(String lockOrderCashOrOrderItemJson) {
        this.lockOrderCashOrOrderItemJson = lockOrderCashOrOrderItemJson;
    }

    public List<LockOrderCashOrOrderItem> getLockOrderCashOrOrderItemList() {
        return lockOrderCashOrOrderItemList;
    }

    public void setLockOrderCashOrOrderItemList(List<LockOrderCashOrOrderItem> lockOrderCashOrOrderItemList) {
        this.lockOrderCashOrOrderItemList = lockOrderCashOrOrderItemList;
    }

    public List<Long> getCombineOrderList() {
        return combineOrderList;
    }

    public void setCombineOrderList(List<Long> combineOrderList) {
        this.combineOrderList = combineOrderList;
    }

    public String getCombineOrderListJson() {
        return combineOrderListJson;
    }

    public void setCombineOrderListJson(String combineOrderListJson) {
        this.combineOrderListJson = combineOrderListJson;
    }

    public Boolean getCombineOrder() {
        return combineOrder;
    }

    public void setCombineOrder(Boolean combineOrder) {
        this.combineOrder = combineOrder;
    }

    public String getStripePaymentId() {
        return stripePaymentId;
    }

    public void setStripePaymentId(String stripePaymentId) {
        this.stripePaymentId = stripePaymentId;
    }

    public Boolean getExpiredOrder() {
        return expiredOrder;
    }

    public void setExpiredOrder(Boolean expiredOrder) {
        this.expiredOrder = expiredOrder;
    }

    public Long getLockTime() {
        return lockTime;
    }

    public void setLockTime(Long lockTime) {
        this.lockTime = lockTime;
    }

    public Boolean getLockItemNumberOrder() {
        return lockItemNumberOrder;
    }

    public void setLockItemNumberOrder(Boolean lockItemNumberOrder) {
        this.lockItemNumberOrder = lockItemNumberOrder;
    }

    public List<OrderItemLockNumber> getItemLockNumberList() {
        return itemLockNumberList;
    }

    public void setItemLockNumberList(List<OrderItemLockNumber> itemLockNumberList) {
        this.itemLockNumberList = itemLockNumberList;
    }

    public String getItemLockNumberListJson() {
        return itemLockNumberListJson;
    }

    public void setItemLockNumberListJson(String itemLockNumberListJson) {
        this.itemLockNumberListJson = itemLockNumberListJson;
    }

    public Long getPrinterId() {
        return printerId;
    }

    public void setPrinterId(Long printerId) {
        this.printerId = printerId;
    }

    public Boolean getWeixinPay() {
        return weixinPay;
    }

    public void setWeixinPay(Boolean weixinPay) {
        this.weixinPay = weixinPay;
    }

    public Boolean getAliPay() {
        return aliPay;
    }

    public void setAliPay(Boolean aliPay) {
        this.aliPay = aliPay;
    }

    public Boolean getMasterCardPay() {
        return masterCardPay;
    }

    public void setMasterCardPay(Boolean masterCardPay) {
        this.masterCardPay = masterCardPay;
    }

    public Boolean getVisaPay() {
        return visaPay;
    }

    public void setVisaPay(Boolean visaPay) {
        this.visaPay = visaPay;
    }

    public Boolean getCashPay() {
        return cashPay;
    }

    public void setCashPay(Boolean cashPay) {
        this.cashPay = cashPay;
    }

    public Boolean getCloseQrScanShow() {
        return closeQrScanShow;
    }

    public void setCloseQrScanShow(Boolean closeQrScanShow) {
        this.closeQrScanShow = closeQrScanShow;
    }

    public List<Long> getReturnReasonList() {
        return returnReasonList;
    }

    public void setReturnReasonList(List<Long> returnReasonList) {
        this.returnReasonList = returnReasonList;
    }

    public String getReturnReasonJson() {
        return returnReasonJson;
    }

    public void setReturnReasonJson(String returnReasonJson) {
        this.returnReasonJson = returnReasonJson;
    }

    public Integer getSubOrderId() {
        return subOrderId;
    }

    public void setSubOrderId(Integer subOrderId) {
        this.subOrderId = subOrderId;
    }

    public Integer getShowNo() {
        return showNo;
    }

    public void setShowNo(Integer showNo) {
        this.showNo = showNo;
    }

    public Boolean getBusinessEndShow() {
        return businessEndShow;
    }

    public void setBusinessEndShow(Boolean businessEndShow) {
        this.businessEndShow = businessEndShow;
    }

    public Boolean getCustomerOrder() {
        return customerOrder;
    }

    public void setCustomerOrder(Boolean customerOrder) {
        this.customerOrder = customerOrder;
    }

    public Boolean getCustomerRequest() {
        return customerRequest;
    }

    public void setCustomerRequest(Boolean customerRequest) {
        this.customerRequest = customerRequest;
    }

    public Double getPackageFee() {
        return packageFee;
    }

    public void setPackageFee(Double packageFee) {
        this.packageFee = packageFee;
    }

    public Boolean getQrFoodTableOrder() {
        return qrFoodTableOrder;
    }

    public void setQrFoodTableOrder(Boolean qrFoodTableOrder) {
        this.qrFoodTableOrder = qrFoodTableOrder;
    }

    public Boolean getReceiveTakeoutPlatOrder() {
        return receiveTakeoutPlatOrder;
    }

    public void setReceiveTakeoutPlatOrder(Boolean receiveTakeoutPlatOrder) {
        this.receiveTakeoutPlatOrder = receiveTakeoutPlatOrder;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public String getAddressJson() {
        return addressJson;
    }

    public void setAddressJson(String addressJson) {
        this.addressJson = addressJson;
    }

    public Long getSceneId() {
        return sceneId;
    }

    public void setSceneId(Long sceneId) {
        this.sceneId = sceneId;
    }

    public List<SendPrinter> getSendPrinterList() {
        return sendPrinterList;
    }

    public void setSendPrinterList(List<SendPrinter> sendPrinterList) {
        this.sendPrinterList = sendPrinterList;
    }

    public String getSendPrinterJson() {
        return sendPrinterJson;
    }

    public void setSendPrinterJson(String sendPrinterJson) {
        this.sendPrinterJson = sendPrinterJson;
    }

    public Boolean getReturnCash() {
        return returnCash;
    }

    public void setReturnCash(Boolean returnCash) {
        this.returnCash = returnCash;
    }

    public Boolean getPartFood() {
        return partFood;
    }

    public void setPartFood(Boolean partFood) {
        this.partFood = partFood;
    }

    public String getLastOperateSession() {
        return lastOperateSession;
    }

    public void setLastOperateSession(String lastOperateSession) {
        this.lastOperateSession = lastOperateSession;
    }

    public List<Integer> getStatusArray() {
        return statusArray;
    }

    public void setStatusArray(List<Integer> statusArray) {
        this.statusArray = statusArray;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public Integer getTakeOutNumber() {
        return takeOutNumber;
    }

    public void setTakeOutNumber(Integer takeOutNumber) {
        this.takeOutNumber = takeOutNumber;
    }

    public Boolean getRealPayOrder() {
        return realPayOrder;
    }

    public void setRealPayOrder(Boolean realPayOrder) {
        this.realPayOrder = realPayOrder;
    }

    public List<OrderItem> getOrderItemDetailList() {
        return orderItemDetailList;
    }

    public void setOrderItemDetailList(List<OrderItem> orderItemDetailList) {
        this.orderItemDetailList = orderItemDetailList;
    }

    public Integer getOrderType() {
        return orderType;
    }

    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    public Long getWaiterId() {
        return waiterId;
    }

    public void setWaiterId(Long waiterId) {
        this.waiterId = waiterId;
    }

    public Integer getUniqueCode() {
        return uniqueCode;
    }

    public void setUniqueCode(Integer uniqueCode) {
        this.uniqueCode = uniqueCode;
    }

    public Long getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Long companyId) {
        this.companyId = companyId;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public Double getUserCost() {
//        if (Config.getInstance().isAliyun()) {
//            return 0.02d;
//        }
        return userCost;
    }

    public void setUserCost(Double userCost) {
        this.userCost = userCost;
    }

    public Double getCostOrigin() {
        return costOrigin;
    }

    public void setCostOrigin(Double costOrigin) {
        this.costOrigin = costOrigin;
    }

    public String getOrderItemDetailJson() {
        return orderItemDetailJson;
    }

    public void setOrderItemDetailJson(String orderItemDetailJson) {
        this.orderItemDetailJson = orderItemDetailJson;
    }

    public Double getServiceFee() {
        return serviceFee;
    }

    public void setServiceFee(Double serviceFee) {
        this.serviceFee = serviceFee;
    }

    public List<Integer> getPayTypeEnumList() {
        return payTypeEnumList;
    }

    public void setPayTypeEnumList(List<Integer> payTypeEnumList) {
        this.payTypeEnumList = payTypeEnumList;
    }

    public String getPayTypeJson() {
        return payTypeJson;
    }

    public void setPayTypeJson(String payTypeJson) {
        this.payTypeJson = payTypeJson;
    }

    public Integer getPersons() {
        return persons;
    }

    public void setPersons(Integer persons) {
        this.persons = persons;
    }

    public Long getParentOrderId() {
        return parentOrderId;
    }

    public void setParentOrderId(Long parentOrderId) {
        this.parentOrderId = parentOrderId;
    }

    public Boolean getReportOrder() {
        return reportOrder;
    }

    public void setReportOrder(Boolean reportOrder) {
        this.reportOrder = reportOrder;
    }

    public String getName() {
        return name;
    }

    @Override
    public String opType() {
        return "订单";
    }

    @Override
    public String[] fieldName() {
        return new String[]{"shopId", "id"};
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getPayType() {
        return payType;
    }

    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    public Integer getTableRow() {
        return tableRow;
    }

    public void setTableRow(Integer tableRow) {
        this.tableRow = tableRow;
    }

    public Integer getTableColumn() {
        return tableColumn;
    }

    public void setTableColumn(Integer tableColumn) {
        this.tableColumn = tableColumn;
    }

    public String getFoodTableKey() {
        return foodTableKey;
    }

    public void setFoodTableKey(String foodTableKey) {
        this.foodTableKey = foodTableKey;
    }

    public String getTicketJson() {
        return ticketJson;
    }

    public void setTicketJson(String ticketJson) {
        this.ticketJson = ticketJson;
    }

    public PartCash getPartCash() {
        return partCash;
    }

    public void setPartCash(PartCash partCash) {
        this.partCash = partCash;
    }

    public String getPartCashJson() {
        return partCashJson;
    }

    public void setPartCashJson(String partCashJson) {
        this.partCashJson = partCashJson;
    }

    public Double getLeftCash() {
        return leftCash;
    }

    public void setLeftCash(Double leftCash) {
        this.leftCash = leftCash;
    }

    public Integer getUserSelectPayType() {
        return userSelectPayType;
    }

    public void setUserSelectPayType(Integer userSelectPayType) {
        this.userSelectPayType = userSelectPayType;
    }

    public String getWaiterName() {
        return waiterName;
    }

    public void setWaiterName(String waiterName) {
        this.waiterName = waiterName;
    }

    public String getFoodTableTemplateKey() {
        return foodTableTemplateKey;
    }

    public void setFoodTableTemplateKey(String foodTableTemplateKey) {
        this.foodTableTemplateKey = foodTableTemplateKey;
    }

    public String getTakeOutPlatName() {
        return takeOutPlatName;
    }

    public void setTakeOutPlatName(String takeOutPlatName) {
        this.takeOutPlatName = takeOutPlatName;
    }

    public Integer getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(Integer orderNo) {
        this.orderNo = orderNo;
    }

    public List<String> getTicketCodeList() {
        return ticketCodeList;
    }

    public void setTicketCodeList(List<String> ticketCodeList) {
        this.ticketCodeList = ticketCodeList;
    }

    public Double getDiscountFee() {
        return discountFee;
    }

    public void setDiscountFee(Double discountFee) {
        this.discountFee = discountFee;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public List<String> getParentTicketCodeList() {
        return parentTicketCodeList;
    }

    public void setParentTicketCodeList(List<String> parentTicketCodeList) {
        this.parentTicketCodeList = parentTicketCodeList;
    }

    public String getParentTicketJson() {
        return parentTicketJson;
    }

    public void setParentTicketJson(String parentTicketJson) {
        this.parentTicketJson = parentTicketJson;
    }

    public Double getDiscountPercent() {
        return discountPercent;
    }

    public void setDiscountPercent(Double discountPercent) {
        this.discountPercent = discountPercent;
    }

    public String getSatisfyAndCutCode() {
        return satisfyAndCutCode;
    }

    public void setSatisfyAndCutCode(String satisfyAndCutCode) {
        this.satisfyAndCutCode = satisfyAndCutCode;
    }

    @Override
    public String getOpName() {
        return opName;
    }

    @Override
    public void setOpName(String opName) {
        this.opName = opName;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<Integer> getPayTypeList() {
        return payTypeList;
    }

    public void setPayTypeList(List<Integer> payTypeList) {
        this.payTypeList = payTypeList;
    }

    public List<Integer> getOrderTypeList() {
        return orderTypeList;
    }

    public void setOrderTypeList(List<Integer> orderTypeList) {
        this.orderTypeList = orderTypeList;
    }

    public Double getSatisfy() {
        return satisfy;
    }

    public void setSatisfy(Double satisfy) {
        this.satisfy = satisfy;
    }

    public Boolean getPayed() {
        return payed;
    }

    public void setPayed(Boolean payed) {
        this.payed = payed;
    }

    public Boolean getCancel() {
        return cancel;
    }

    public void setCancel(Boolean cancel) {
        this.cancel = cancel;
    }

    public Boolean getPayFirst() {
        return payFirst;
    }

    public void setPayFirst(Boolean payFirst) {
        this.payFirst = payFirst;
    }

    public Boolean getOnlinePay() {
        return onlinePay;
    }

    public void setOnlinePay(Boolean onlinePay) {
        this.onlinePay = onlinePay;
    }

    public Boolean getVerified() {
        return verified;
    }

    public void setVerified(Boolean verified) {
        this.verified = verified;
    }

    public Integer getPay3rd() {
        return pay3rd;
    }

    public void setPay3rd(Integer pay3rd) {
        this.pay3rd = pay3rd;
    }

    public String getSyssn() {
        return syssn;
    }

    public void setSyssn(String syssn) {
        this.syssn = syssn;
    }

    public Double getPayOrderCost() {
        return payOrderCost;
    }

    public void setPayOrderCost(Double payOrderCost) {
        this.payOrderCost = payOrderCost;
    }

    public Boolean getApplePay() {
        return applePay;
    }

    public void setApplePay(Boolean applePay) {
        this.applePay = applePay;
    }

    public Boolean getGooglePay() {
        return googlePay;
    }

    public void setGooglePay(Boolean googlePay) {
        this.googlePay = googlePay;
    }

    public Double getTakeOutDiscountFee() {
        return takeOutDiscountFee;
    }

    public void setTakeOutDiscountFee(Double takeOutDiscountFee) {
        this.takeOutDiscountFee = takeOutDiscountFee;
    }

    public Long getConfirmTime() {
        return confirmTime;
    }

    public void setConfirmTime(Long confirmTime) {
        this.confirmTime = confirmTime;
    }

    public Long getPayTime() {
        return payTime;
    }

    public void setPayTime(Long payTime) {
        this.payTime = payTime;
    }

    public Double getTicketFee() {
        return ticketFee;
    }

    public void setTicketFee(Double ticketFee) {
        this.ticketFee = ticketFee;
    }

    public Boolean getSendKitchen() {
        return sendKitchen;
    }

    public void setSendKitchen(Boolean sendKitchen) {
        this.sendKitchen = sendKitchen;
    }

    public Boolean getBaDaTong() {
        return baDaTong;
    }

    public void setBaDaTong(Boolean baDaTong) {
        this.baDaTong = baDaTong;
    }

    public String getSessionId() {
        return sessionId;
    }

    public void setSessionId(String sessionId) {
        this.sessionId = sessionId;
    }

    public Boolean getTimeExpiredOrder() {
        return timeExpiredOrder;
    }

    public void setTimeExpiredOrder(Boolean timeExpiredOrder) {
        this.timeExpiredOrder = timeExpiredOrder;
    }

    public Boolean getUnionPay() {
        return unionPay;
    }

    public void setUnionPay(Boolean unionPay) {
        this.unionPay = unionPay;
    }

    public Boolean getAmericanExpress() {
        return americanExpress;
    }

    public void setAmericanExpress(Boolean americanExpress) {
        this.americanExpress = americanExpress;
    }

    public Boolean getStripePay() {
        return stripePay;
    }

    public void setStripePay(Boolean stripePay) {
        this.stripePay = stripePay;
    }

    public String getPayTypeName_zh() {
        return payTypeName_zh;
    }

    public void setPayTypeName_zh(String payTypeName_zh) {
        this.payTypeName_zh = payTypeName_zh;
    }

    public String getPayTypeName_en() {
        return payTypeName_en;
    }

    public void setPayTypeName_en(String payTypeName_en) {
        this.payTypeName_en = payTypeName_en;
    }

    public Double getDeliveryFee() {
        return deliveryFee;
    }

    public void setDeliveryFee(Double deliveryFee) {
        this.deliveryFee = deliveryFee;
    }

    public Double getDeliveryFee_b() {
        return deliveryFee_b;
    }

    public void setDeliveryFee_b(Double deliveryFee_b) {
        this.deliveryFee_b = deliveryFee_b;
    }

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}
